brightScreen()
unlockScreen()
home()
app.launchApp('钉钉')
toast('test')
const CORP_ID = "ding40e8d2fad3d041ce35c2f4657eb6378f"
const waiqinReason = '居家办公' //外勤打卡原因
sleep(3*1000)
attendKaoqin()
clockIn()
processWaiqin()

// if(null != textContains("上海电科智能系统股份有限公司").findOne())
// {
//     console.log('break loop')
    
// }


sleep(1000)


/**
 * @description 唤醒设备
 */
 function brightScreen() {

    console.log("唤醒设备")
    
    // device.setBrightnessMode(0) // 手动亮度模式
    // device.setBrightness(SCREEN_BRIGHTNESS)
    // device.wakeUpIfNeeded() // 唤醒设备
    device.keepScreenOn()   // 保持亮屏
    sleep(1000) // 等待屏幕亮起
    
    if (!device.isScreenOn()) {
        console.warn("设备未唤醒, 重试")
        device.wakeUpIfNeeded()
        brightScreen()
    }
    else {
        console.info("设备已唤醒")
    }
    sleep(1000)
}


/**
 * @description 解锁屏幕
 */
function unlockScreen() {

    console.log("解锁屏幕")
    
    if (isDeviceLocked()) {

        gesture(
            320, // 滑动时间：毫秒
            [
                device.width  * 0.5,    // 滑动起点 x 坐标：屏幕宽度的一半
                device.height * 0.9     // 滑动起点 y 坐标：距离屏幕底部 10% 的位置, 华为系统需要往上一些
            ],
            [
                device.width / 2,       // 滑动终点 x 坐标：屏幕宽度的一半
                device.height * 0.1     // 滑动终点 y 坐标：距离屏幕顶部 10% 的位置
            ]
        )

        sleep(1000) // 等待解锁动画完成
        home()
        sleep(1000) // 等待返回动画完成
    }

    if (isDeviceLocked()) {
        console.error("上滑解锁失败, 请按脚本中的注释调整 gesture(time, [x1,y1], [x2,y2]) 方法的参数!")
        return;
    }
    console.info("屏幕已解锁")
}

function attendKaoqin(){

    var url_scheme = "dingtalk://dingtalkclient/page/link?url=https://attend.dingtalk.com/attend/index.html"

    if(CORP_ID != "") {
        url_scheme = url_scheme + "?corpId=" + CORP_ID
    }

    var a = app.intent({
        action: "VIEW",
        data: url_scheme,
        //flags: [Intent.FLAG_ACTIVITY_NEW_TASK]
    });
    app.startActivity(a);
    console.log("正在进入考勤界面...")
    
    textContains("申请").waitFor()
    console.info("已进入考勤界面")
    sleep(1000)
}

function clockIn()
{
    if (null != textMatches("上班打卡").clickable(true).findOne(1000)) {
        btn_clockin = textMatches("上班打卡").clickable(true).findOnce()
        btn_clockin.click()
        console.log("按下打卡按钮")
    }
    else {
        click(device.width / 2, device.height * 0.560)
        console.log("点击打卡按钮坐标")
    }
    sleep(5*1000)
    // threads.start(function () {
    //     engines.execScriptFile('./test.js')
    // })
    
    //click(device.width / 2, device.height * 0.590)
    console.log("点击打卡按钮坐标")
    console.info("已进入考勤界面")
}

function clockOut()
{
    if (null != textMatches("下班打卡").clickable(true).findOne(1000)) {
        btn_clockout = textMatches("下班打卡").clickable(true).findOnce()
        btn_clockout.click()
        console.log("按下打卡按钮")
        sleep(1000)
    }
    else {
        click(device.width / 2, device.height * 0.560)
        console.log("点击打卡按钮坐标")
    }

    if (null != textContains("早退打卡").clickable(true).findOne(1000)) {
        className("android.widget.Button").text("早退打卡").clickable(true).findOnce().parent().click()
        console.warn("早退打卡")
    }
    
    home()
    sleep(1000)
}

function processWaiqin()
{
    sleep(5 * 1000)
    console.log('判断是否为外勤')
    if(null != textContains("外勤打卡").clickable(true).findOne(2000))
    {
        console.log('外勤打卡处理>>>>>')
        let textField = editable(true).findOne(2000)
        if(textField)
        {
            console.log('输入外勤打卡原因')
            textField.setText(waiqinReason)
            console.log('点击外勤打卡按钮')
            className("android.widget.Button").textContains("外勤打卡").findOne(2000).parent().click()
        }else{
            console.log('未找到外勤打卡输入框')
        }
    }else{
        console.log('非外勤打卡')
    }
}

// 屏幕是否为锁定状态
function isDeviceLocked() {
    importClass(android.app.KeyguardManager)
    importClass(android.content.Context)
    var km = context.getSystemService(Context.KEYGUARD_SERVICE)
    return km.isKeyguardLocked()
}